package cn.itsource.readerwriter;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

import cn.itsource.util.IoUtil;

/**
 *	字符流：
 *	使用于处理文本相关的文件
 *
 *		Reader 抽象类：
 *				|子类
 *			InputStreamReader（转换流）
 *				|子类
 *			FileReader：适用于读取字符相关的文件
 *				1. 构造方法：
 *						1.FileReader(File file) 
						2.FileReader(String fileName)	fileName：文件名（相对路径/绝对路径）
 *
 *				2. 读取方法：
 *						1. int read()读取一个字符
 *						2. int read(char[] c,int start,int length)读取制定长度的字符到char数组中
 *						3. int read(char[] c)读取字符到char数组中
 *				
 *		Writer 抽象类：
 *				|子类
 *			OutputStreamWriter（转换流）
 *				|子类
 *			FileWriter：适用于写出字符相关的文件
 *				1. 构造方法：
				 * 		1.FileWriter(File file) 	默认是false
						2.FileWriter(File file, boolean append)  
							append：表示是在文件末尾追加还是从头覆盖，如果true追加，false覆盖，默认是false
						3.FileWriter(String fileName) 	默认是false
						4.FileWriter(String fileName, boolean append)  
							fileName：文件名（相对路径/绝对路径）
 *				2. 写出方法：
 *						1. public Writer append(CharSequence csq,int start,int end)
 *						2. public Writer append(char c)
 *						3. public Writer append(CharSequence csq)
 *						4. public void write(char[] c)
 *						5. public void write(String str)
 *						6. public void write(String str,int start,int end)
 *

 */
public class FileReaderTest {

	public static void main(String[] args) {
		/*
		 * 输入字符流构造方法
		 * 		1.FileReader(File file) 
				2.FileReader(String fileName) 
					fileName：文件名（相对路径/绝对路径）
		 */
		FileReader fr = null;
		try {
			fr = new FileReader("inputsteam.txt");
			
			//调用方法读取
			//1. int read()读取一个字符
			//2. int read(char[] c,int start,int length)读取制定长度的字符到char数组中
			//3. int read(char[] c)读取字符到char数组中		最常用
			char[] c = new char[10];
			int read = -1;
			while ((read = fr.read(c)) != -1) {
				/*
				 * 	String(char[] value) 将char型数组转换为字符串
					String(char[] value, int offset, int count) 将指定长度的char型数组转换为字符串
				 */
				System.out.println(new String(c,0,read));
			}
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			//调用工具类的关流方法
			IoUtil.closeIo(fr, null);
		}
		
	}

}
